package com.hy.mydesktop.client.component.meta;

import java.util.List;
import java.util.Map;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;




import com.extjs.gxt.ui.client.data.BaseModel;



/**
 * 
 * <ul>
 * <li>开发作者：花宏宇</li>
 * <li>设计日期：2010-10-30；时间：上午10:04:57</li>
 * <li>类型名称：AbstractComponentModel</li>
 * <li>设计目的：</li>
 * </ul>
 * <ul>
 * <b>修订编号：</b>
 * <li>修订日期：</li>
 * <li>修订作者：</li>
 * <li>修订原因：</li>
 * <li>修订内容：</li>
 * </ul>
 */


//@Entity
@Table(name="t_component")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="component_type",discriminatorType=DiscriminatorType.STRING)

public class AbstractComponentModel extends BaseModel {
	//public class AbstractComponentModel extends AbstractPersistentEntity {
	
	/*public AbstractComponentModel() {
		super();
	}


	public AbstractComponentModel(Map<String, Object> properties) {
		super(properties);
	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:19:42</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @ Index ( name = "idIndex" )
	 * @return
	 *//*
	@ Id
	@ Column ( name = "id" , length = 36 , unique = true , nullable = false )
	
	public String getIdentifier ( )
	{
		return super.get(AbstractComponetModelEnum.ID.name().toLowerCase());
	}
	
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:19:54</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param id
	 *//*
	public void setIdentifier (        String id )
	{
		super.set(AbstractComponetModelEnum.ID.name().toLowerCase(), id);

	}
	
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:19:42</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @ Index ( name = "idIndex" )
	 * @return
	 *//*
	
	@ Column (  nullable = false )
	
	public String getComponentModelTypeIndex( )
	{
		return super.get(AbstractComponetModelEnum.COMPONENT_MODEL_TYPE_INDEX.name().toLowerCase());
	}
	
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:19:54</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param componentModelTypeIndex
	 *//*
	public void setComponentModelTypeIndex (        String componentModelTypeIndex )
	{
		super.set(AbstractComponetModelEnum.COMPONENT_MODEL_TYPE_INDEX.name().toLowerCase(), componentModelTypeIndex);

	}
	
	
	@OneToMany(cascade=CascadeType.ALL)
	@JoinColumn(name="AbstractComponentModel_id")
	public List<EventStructureMetaModelForDispacher> getEventStructureMetaModelForDispacher() {
		
		return super.get(AbstractComponetModelEnum.EVENTSTRUCTUREMETAMODELFORDISPACHERS.name().toLowerCase());

	}
	
	public void setEventStructureMetaModelForDispacher(List<EventStructureMetaModelForDispacher> list) {
		super.set(AbstractComponetModelEnum.EVENTSTRUCTUREMETAMODELFORDISPACHERS.name().toLowerCase(), list);

	}

	@OneToMany(cascade=CascadeType.ALL)
	@JoinColumn(name="AbstractComponentModel_id")
	public List<EventStructureMetaModelForListener> getEventStructureMetaModelsForListener() {
		
		return super.get(AbstractComponetModelEnum.EVENTSTRUCTUREMETAMODELSFORLISTENERS.name().toLowerCase());

	}
	
	public void setEventStructureMetaModelsForListener(List<EventStructureMetaModelForListener> list) {
		super.set(AbstractComponetModelEnum.EVENTSTRUCTUREMETAMODELSFORLISTENERS.name().toLowerCase(), list);
	}
	
	@OneToMany(mappedBy="parent")
	public List<AbstractComponentModel> getChildren(AbstractComponentModel componentModel) {
		
		return super.get(AbstractComponetModelEnum.CHILDREN.name().toLowerCase());

	}
	
	public void setChildren(List<AbstractComponentModel> list) {
		super.set(AbstractComponetModelEnum.CHILDREN.name().toLowerCase(), list);

	}
	
	
	
	@ManyToOne
	@JoinColumn(name="parent_id",nullable=true)
	public AbstractComponentModel getParent() {
		
		return super.get(AbstractComponetModelEnum.PARENT.name().toLowerCase());

	}
	
	public void setParent(AbstractComponentModel componentModel) {
		super.set(AbstractComponetModelEnum.PARENT.name().toLowerCase(), componentModel);

	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：获取宽度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:06:01</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	@Column(nullable=true)
	public int getWidth() {
		return super.get(AbstractComponetModelEnum.WIDTH.name().toLowerCase());
	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：设置宽度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:06:31</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param width
	 *//*
	public void setWidth(int width) {
		super.set(AbstractComponetModelEnum.WIDTH.name().toLowerCase(), width);
	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：获取高度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:24:09</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	@Column(nullable=true)
	public int getHeight() {
		return super.get(AbstractComponetModelEnum.HEIGHT.name().toLowerCase(),100);
	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：设置高度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:24:37</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param height
	 *//*
	public void setHeight(int height) {
		super.set(AbstractComponetModelEnum.HEIGHT.name().toLowerCase(), height);
	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：获取最小宽度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:26:06</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	@Column(nullable=true)
	public int getMinWidth() {
		return super.get(AbstractComponetModelEnum.MINWIDTH.name().toLowerCase());

	}
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：设置最小宽度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:31:07</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param minWidth
	 *//*
	public void setMinWidth(int minWidth) {
		super.set(AbstractComponetModelEnum.MINWIDTH.name().toLowerCase(), minWidth);

	
	}

	
*//**
 * 
 * <ul>
 * <li>方法含义：设置最小高度</li>
 * <li>方法作者：花宏宇</li>
 * <li>编写日期：2010-10-30；时间：下午上午10:32:03</li>
 * </ul>
 * <ul>
 * <b>修订编号：</b>
 * <li>修订日期：</li>
 * <li>修订作者：</li>
 * <li>修订原因：</li>
 * <li>修订内容：</li>
 * </ul>
 * @return
 *//*
	@Column(nullable=true)
	public int getMinHeight() {
		//System.err.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
		//System.err.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"+super.get(AbstractComponetModelEnum.MINHEIGHT.name().toLowerCase()));
		return super.get(AbstractComponetModelEnum.MINHEIGHT.name().toLowerCase(),100);
		//return null;

		
	}

	*//**
	 * 
	 * <ul>
	 * <li>方法含义：设置最小高度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:33:03</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param minHight
	 *//*
	public void setMinHeight(int minHeight) {
		super.set(AbstractComponetModelEnum.MINHEIGHT.name().toLowerCase(), minHeight);

	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:39:51</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	public String getTitle() {
	
		return super.get(AbstractComponetModelEnum.TITLE.name().toLowerCase());

	}

	*//**
	 * 
	 * <ul>
	 * <li>方法含义：</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:39:57</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param title
	 *//*
	public void setTitle(String title) {
		
		super.set(AbstractComponetModelEnum.TITLE.name().toLowerCase(), title);

	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:39:51</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	@OneToOne()
	@JoinColumn(name="GxtToSeamServiceParameterModel_id")
	public GxtToSeamServiceParameterModel getGxtToSeamServiceParameter() {
	
		return super.get(AbstractComponetModelEnum.GXTTOSEAMSERVICEPARAMETERMODEL.name().toLowerCase());

	}

	*//**
	 * 
	 * <ul>
	 * <li>方法含义：</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:39:57</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param title
	 *//*
	public void setGxtToSeamServiceParameter(GxtToSeamServiceParameterModel gxtToSeamServiceParameter) {
		
		super.set(AbstractComponetModelEnum.GXTTOSEAMSERVICEPARAMETERMODEL.name().toLowerCase(), gxtToSeamServiceParameter);

	}
	*/
	
}

/*@Entity
@Table(name="t_BaseComponent")
public class AbstractComponentModel extends BaseModel {
	
	public AbstractComponentModel() {
		super();
	}


	public AbstractComponentModel(Map<String, Object> properties) {
		super(properties);
	}


	*//**
	 * 
	 * <ul>
	 * <li>方法含义：</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:19:42</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	@ Id
	@ Column ( name = "id" , length = 36 , unique = true , nullable = false )
	@ Index ( name = "idIndex" )
	public String getId ( )
	{
		return super.get("id");
	}
	
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:19:54</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param id
	 *//*
	public void setId (        String id )
	{
		super.set("id", id);

	}
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：获取宽度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:06:01</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	public int getWidth() {
		return super.get("width");
	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：设置宽度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:06:31</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param width
	 *//*
	public void setWidth(int width) {
		super.set("width", width);
	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：获取高度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:24:09</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	public int getHeight() {
		return super.get("height");
	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：设置高度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:24:37</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param height
	 *//*
	public void setHeight(int height) {
		super.set("height", height);
	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：获取最小宽度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:26:06</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	public int getMinWidth() {
		return super.get("minWidth");

	}
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：设置最小宽度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:31:07</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param minWidth
	 *//*
	public void setMinWidth(int minWidth) {
		super.set("minWidth", minWidth);

	
	}

	
*//**
 * 
 * <ul>
 * <li>方法含义：设置最小高度</li>
 * <li>方法作者：花宏宇</li>
 * <li>编写日期：2010-10-30；时间：下午上午10:32:03</li>
 * </ul>
 * <ul>
 * <b>修订编号：</b>
 * <li>修订日期：</li>
 * <li>修订作者：</li>
 * <li>修订原因：</li>
 * <li>修订内容：</li>
 * </ul>
 * @return
 *//*
	public int getMinHeight() {
		return super.get("minHeight");

		
	}

	*//**
	 * 
	 * <ul>
	 * <li>方法含义：设置最小高度</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:33:03</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param minHight
	 *//*
	public void setMinHeight(int minHeight) {
		super.set("minHeight", minHeight);

	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:39:51</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	public String getTitle() {
	
		return super.get("title");

	}

	*//**
	 * 
	 * <ul>
	 * <li>方法含义：</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午10:39:57</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param title
	 *//*
	public void setTitle(String title) {
		
		super.set("title", title);

	}
	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：获取顶部控件元素</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午11:52:57</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	public Component getTopComponent() {
    	return super.get("topComponent");
    }

	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：设置顶部控件元素</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午11:52:57</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	public void setTopComponent(Component topComponent) {
    	super.set("topComponent" , topComponent);
    }
	

	*//**
	 * 
	 * <ul>
	 * <li>方法含义：获取底部控件元素</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午11:52:57</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	public Component getBottomComponent() {
    	return super.get("bottomComponent");
    }

	
	*//**
	 * 
	 * <ul>
	 * <li>方法含义：设置底部控件元素</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-10-30；时间：下午上午11:52:57</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 *//*
	public void setBottomComponent(Component bottomComponent) {
    	super.set("bottomComponent" , bottomComponent);
    }
}
*/